home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
92
/
JPI.CD
< prev
next >
Wrap
Text File
|
1995-09-14
|
11KB
|
192 lines
@VKét szék közt@N...
@VTopSpeed Pascal@N
A Borland cég Turbo Pascalja hosszú éveken át vezette a
PC-s Pascalok két versenyzôbôl álló mezônyét -- a Microsoft
Quick Pascal nem igazán szorította meg. Most gyors, elszánt
vetélytársak vették üldözôbe.
Az amerikai Jensen and Partners szoftverház (JPI)
alaposan be akar fûteni a babérjain üldögélô Turbo
Pascalnak. A Borlandból kivált és saját céget -- a JPI-t --
alapító szakemberek nem ismeretlenek a programozási nyelvek
területén. Elôször 1988 végén hallattak magukról, amikor
piacra dobtak egy erôsen optimalizáló compilert, a TopSpeed
Modula--2-t, Turbo-stílusú integrált fejlesztôi
környezettel. Hamarosan jött a következô szenzáció. A
Modula--2 compiler (amelyet kezdettôl fogva önmagában írtak)
2.0 verzióját követôen Modula--2-ben elkészítettek -- és a
Modula--2 compilerrel közös programkörnyezetbe integráltak
-- elôször egy C-, majd egy C++-compilert. A Modula--2, C,
C++ könyvtárakat kölcsönösen használni lehet mindegyik
nyelvbôl. A JPI jogosan beszél többnyelvû fejlesztôi
rendszerrôl.
Figyelembe vették a kor irányzatait is:
objektumorientált nyelvi elemekkel bôvítették ki a
Modula--2-t, programkönyvtárral támogatják az OS/2 és a
Presentation Manager használatát, s compilereikkel Windows
3.0 alá is készíthetôk programok. Nagy fejlesztésekhez
jelenleg a JPI többnyelvû rendszere a legalkalmasabb PC-ken
-- ezt maga a JPI mutatja be leglátványosabban:
Modula--2-ben és C-ben dolgoznak fejlesztôik.
A TopSpeed-család legújabb gyermekét, a TopSpeed Pascalt
most mutatták be (Ada és Fortran compilert terveznek még).
Nyilvánvaló, hogy a PC-világban minden Pascal rendszernek
össze kell mérnie az erejét a Turbo Pascallal. A léc pedig
elég magasan van a 6.0 verzió és a Turbo Pascal for Windows
megjelenése óta.
A JPI két érvet hangsúlyoz Pascal compilere
reklámozásában: a compiler betartja az ISO szabványt és az
általa kigenerált kód roppant hatékony. Míg egy optimalizáló
compiler mindig nagy tekintélyû a programozók körében, addig
a JPI az ISO szabványhoz való ragaszkodással bakot lôtt. Az
ISO szabványt betartó programok ugyan nagymértékben
hordozhatók -- könnyen átvihetôk a legkülönbözôbb
számítógépcsaládok között --, de az ISO szûkös nyelvi
lehetôségeivel nem lehet kereskedelmi programokat írni. Az
ISO szabvány nem tartalmaz sem modul-koncepciót, sem
file-kezelést (a szekvenciális file-okat kivéve), és a
rendszerközeli programozáshoz szükséges alapvetô nyelvi
elemeket sem határozza meg -- mindezek nélkül pedig csak
tankönyvekbe lehet programokat írni.
E tényeket természetesen ismerik a JPI fejlesztôi is.
Ezért jócskán kibôvítették az ISO szabvány lehetôségeit. Az
általuk bevezetett modul-koncepció erôsen követi a Modula--2
mintáját. Egy egység (unit) -- így hívják a külön
lefordítható programrészeket -- @Kinterface@N részbôl (itt van
leírva az összes exportált konstans, típus, változó, eljárás
stb. ""viselkedése") és @Kimplementációs@N részbôl (itt van
részletesen kifejtve a megvalósításuk) áll. Ez az
elkülönítés nem új módszer, már a régi UCSD Pascalban is
megvolt. A TopSpeed Pascalban azonban a két rész külön
file-ban van. Ennek az az elônye, hogy az implementációs
részt úgy is lehet módosítani, hogy az interface részt
változatlanul hagyjuk -- tehát a modult importáló más
modulokat, programokat nem kell újrafordítani. Ráadásul --
míg az interface rész más modulok számára is látható -- az
implementációs részt lefordított alakban (szabványos .OBJ,
.LIB formátumban) is el lehet adni, ami megkönnyíti a
kereskedelmi célú programfejlesztést.
Ha egy program vagy egy másik unit akar meghívni egy így
kialakított könyvtári modult, akkor az átvett neveket
(konstansok stb. neveit) be kell írni egy importlistába. E
megoldás erôsen különbözik az UCSD-étôl -- ott a teljes
modul átvételéhez elég egy egyszerû USES utasítás,
névütközések (névazonosságok) esetén minôsítô részként az
importált nevek elé lehet tenni a modul nevét. E megoldás
nem olyan elegáns, mint a Modula--2-é, de jól bevált, és a
Turbo Pascalba is átvették. TopSpeed Pascalban is lehetséges
a teljes import (@KIMPORT <modulnév> *;@N), de az importált
neveket nem lehet újradefiniálni, ami néha kellemetlen
lehet.
A compiler mellé adott unitok jól használhatók. Sajnos a
file-kezelést -- a file-ok a standard Pascalban egyszerû
szekvenciák -- nem a legmodernebb szempontok alapján
bôvítették ki. A TopSpeed könyvtárt használva ugyan
tetszôleges file-ok kezelhetôk, de vagy csak olvasásra vagy
csak írásra lehet megnyitni azokat. A programozó hiába
keresi a legtöbbet használt módot, amely lehetôvé tenné az
írást és olvasást is. Ugyan mellékeltek egy kis, @KStreams@N
nevû demo unitot, amely tetszôleges file-kezelést tesz
lehetôvé igen gépközeli szinten, de a kézikönyvben nincs
hozzá útmutató, és a Streams unit eljárásai nehézkesebbek a
Turbo Pascaléinál. (@KA többnyelvû TopSpeed környezetben
szabadon használhatók a Modula--2, C és C++ file-kezelô és
más eljárások, de ehhez meg kell venni azokat a compilereket
is -- a szerk.@N.)
A rendszerközeli nyelvi elemeknél egy sor bôvítés
található, amelyeket hasonló formában tartalmaz a Turbo
Pascal is: eljárások az operációs rendszerrel való
kapcsolathoz, a processzor regisztereinek, a memóriának és a
portoknak közvetlen kezeléséhez. A speciális típusátalakító
operátorokkal a TopSpeed compiler fontos eszközt kínál a
Pascal szigorú típusellenôrzésének kikerülésére, amire a
rendszerprogramozás területén gyakran van szükség.
Határozottan megkülönböztetik a valódi típusátalakítást
(például @KByte in Real@N) és a típusinterpretációt
(típusértelmezés). Az elkülönítés helyes, és a programokat
olvashatóbbá teszi. Sajnos a választott szintaxis nagyon
szokatlan. A Turbo Pascal és a Modula--2 a típusneveket
függvénynevek formájában használja típusátalakításra --
például @KWORD(i)@N alakítja át az @Ki@N-t @KWORD@N típusúvá --, a
TopSpeed Pascal viszont a típusnevet egy operátorral a
változónévhez kapcsolja, például: @Ki::WORD@N.
Érdekes módon szinte teljesen átvették a Turbo Pascal
string-koncepcióját: a stringek maximum 255 karakterbôl
állhatnak, a nulladik karakter tárolja a string hosszát. A
stringkezelô rutinok is a Turbo Pascalt követik. Ezenkívül
saját eljárásokat lehet írni tetszôleges méretû stringek
kezelésére, a Modula--2 nyílt tömbjeihez hasonlóan. Ilyen
stringeket használva azonban csak a kétféle string
látszólagos kompatibilitása érhetô el egy compiler-kapcsoló
segítségével (a compiler ekkor nem fog tiltakozni a két
típus keverése ellen), a hagyományos Pascal stringek
esetleges túlcsordulása nem elôzhetô meg.
A könyvtárban hiába keressük a Turbo Pascal @KGraph@N
unitjának megfelelôjét. Cserébe párhuzamosan futó
folyamatokból álló programok írhatók. Ma már egyetlen
programozási nyelv sem jelenik meg objektumorientált
bôvítések nélkül. A TopSpeed Pascal is figyelembe veszi ezt
az irányzatot. A unitok körülbelül ugyanolyan lehetôségeket
kínálnak mint Turbo Pascalban, néhány dologban még túl is
mennek azon. A szintaxis azonban erôsen eltérô.
A módszerek (method) itt virtuálisak, hacsak a
programozó nem kifejezetten statikusnak nevezi ôket.
Pontosan fordítva mûködik a Turbo Pascal: ott a módszerek
statikusak, hacsak nem írjuk elô virtuális voltukat. Ez
gyorsítja a kódot minden olyan esetben, amikor a
programíráskor nem foglalkozunk a sebességgel (a compiler
elvégzi azt helyettünk). TopSpeed Pascalban nincsenek
konstruktorok és destruktorok, viszont minden objektum
kaphat egy elôkészítô (inicializáló) részt, ami nagy
segítséget jelent. Az osztályok implementálása hasonló
szintaxisú a unitokéhoz (@KIMPLEMENTATION OF <osztály>@N). Ez
javítja az áttekinthetôséget. Van egy operátor, amellyel
ellenôrizni lehet, hogy egy adott objektum egy adott
osztályhoz tartozik-e vagy sem. A fölérendelt osztályok
módszereit is lehet használni, még akkor is, ha ezek
helyileg el vannak nyomva. Ezenkívül örökölhetôk több eltérô
osztály tulajdonságai is (multiple inheritance). Ez is új az
eddigi Pascal rendszerekhez képest.
Bármennyit hivatkozik a JPI a TopSpeed Pascal erényeire,
a szabványt ma a Turbo Pascal jelenti. Kérdés, hogy milyen
ráfordítással jár a Turbo Pascal programok áttevése TopSpeed
alá -- ami vonzó lehetôség, hiszen a TopSpeed Pascal sokkal
gyorsabb kódot generál mint a Turbo. Ugyanazok a programok
vele lefordítva átlagosan kétszer olyan gyorsan futnak.
A kézikönyvben hosszú fejezet foglalkozik a Turbo Pascal
forrásszövegek átírásával. Bemutatnak egy automatikus
konvertáló programot, amely lényegesen csökkenti az
átalakítás idôigényét. Sok programmal teszteltük e
segédprogramot. Azokat a programokat, amelyek közel állnak a
Pascal szabványhoz, és a Turbo specialitásaiból csak keveset
használnak ki, a TopSpeed a konvertálás után azonnal, minden
további átdolgozás nélkül át tudja venni. Minél többet
használ a program a Borland bôvítéseibôl, annál nehezebben
""rágja meg" a konvertáló program, néhány specialitással
pedig semmit nem tud kezdeni.
A JPI TopSpeed Pascalja tehát két szék közt a pad alá
esett. Az ISO szabvány túl szûk a gyakorlati programozáshoz,
a bôvítések pedig korlátozzák a hordozhatóságot. A Turbo
Pascal forrásszövegek problémamentes átvételéhez viszont túl
különcködôk a bôvítések. Néhány éve a programozók még
lelkesen vetették volna rá magukat egy olyan compilerre,
amely integrált fejlesztôi környezetet kínál, kiváló kódot
állít elô és ráadásul egy többnyelvû compiler-család tagja.
Ma erôsen kérdéses, hogy a TopSpeed Pascal nagy sikert fog-e
aratni, mivel a Turbo Pascal uralkodik a piacon. Megjelent a
Stonybrook Pascal+ is, amely egy -- szintén Modula--2-ben
fejlesztô -- amerikai cégnek a TopSpeedhez hasonlóan
kiválóan optimalizáló compilere. E hármas verseny elônyeit
természetesen leginkább a programozók élvezik.
@KUlrich Kern@N
@VFutási idôk (másodperc)@N
Rendezés TopSpeed Turbo
10 ezer egész szám 12 24
1000 string 13 22